二次曲線のパラメータの推定
切片,a0,をシフト
\(\Large \displaystyle y_i = a_0 + a_1 x_i + a_2 x_i^2 \)
a0 | 3.579131 | 3.9384 | 4.579131 | 5.079131 | 5.579131 | |||
δ | -1 | -0.5 | 0 | 0.5 | 1 | |||
a1 | 0.85525 | 0.62007 | 0.41489 | 0.2097 | 0.00456 | |||
a2 | 1.1270 | 1.1442 | 1.1614 | 1.1786 | 1.1958 | |||
i | x | y | \( \hat{y} \) | |||||
1 | 0 | 5 | 3.579131 | 4.079131 | 4.579131 | 5.079131 | 5.579131 | |
2 | 2 | 10 | 9.737739 | 9.896167 | 10.0546 | 10.21304 | 10.37152 | |
3 | 3 | 15 | 16.19812 | 16.23736 | 16.27661 | 16.31586 | 16.35517 | |
4 | 4 | 25 | 24.91255 | 24.867 | 24.82147 | 24.77593 | 24.73045 | |
5 | 6 | 50 | 49.10355 | 48.99162 | 48.87973 | 48.76782 | 48.65592 | |
6 | 9 | 102 | 102.2954 | 102.3419 | 102.3885 | 102.435 | 102.4814 | |
S (\(y_i - \hat{y} \)の平方和) | 4.421685 | 3.541263 | 3.2476 |
3.540842 | 4.420841 | |||
dS (Seとの差分) | 1.174036 | 0.293614 | 0 | 0.293193 | 1.173192 | |||
切片を変えて傾きを近似すると,このようなグラフを得ることができます.
ここで,S,Se,は,
・残差平方和
推定値からの残差
\(\Large \displaystyle Se = \sum_{i=1}^{n} \left( y_i -\hat{a_0} - \hat{a_1} x_i - \hat{a_2} x_i^2 \right)^2 \)
a0をシフトさせたときの,推定値からの残差
\(\Large \displaystyle S = \sum_{i=1}^{n} \left( y_i -a_0 - \hat{a_1} x_i - \hat{a_2} x_i^2 \right)^2 \)
であり,傾きの値a0を,δ,だけシフトさせて,固定し,その際のa1, a2の推定値をソルバーで推定しました.
dS,を見ていただけるとわかるように,推定値,Seが一番小さく,ほぼ左右対称に増加していることがわかります.
グラフ化すると,
のように,二乗+定数できれいに近似できます.
二次曲線の近似においてもきれいに近似でき,
\(\Large \displaystyle y = 3.2476 + 1.1736 \ \delta^2 \)
ここで,分散値は,
・分散
\(\Large \displaystyle Ve = \frac{1}{n-3} \sum_{i=1}^{n} \left(y_i -\hat{a_0} - \hat{a_1} x_i \right)^2 = \frac{Se}{n-2} = \frac{3.2476}{6-3} = 1.0826 \)
であり(a0,a1,の二つのパラメータが2つあるので,自由度は,n-3),
\(\Large \displaystyle 1.1736 \ \delta^2 = 1.0826 \)
となるδがSEとなるので,
\(\Large \displaystyle \delta^2 = \frac{1.0826}{1.1736} = 0.9224 \)
\(\Large \displaystyle SE_{a_0} = \sqrt{\delta^2} = 0.96042 \)
と推定できます.
・Rによる推定
Rでの近似を行ってみると,
プログラムは,
xx <- c(0,2,3,4,6,9)
yy <- c(5,10,15,25,50,102)
plot(xx,yy)
fm<-nls(yy~a0+a1*xx+a2*xx^2,start=c(a0=5,a1=1,a2=1),trace=TRUE)
summary(fm)
で,結果は,
Parameters: | |||||
Estimate | Std. Error | t value | Pr(>|t|) | ||
a0 | 4.57931 | 0.96042 | 4.768 | 0.01752 | * |
a1 | 0.41473 | 0.4869 | 0.852 | 0.45693 | |
a2 | 1.16144 | 0.05045 | 23.022 | 0.00018 | *** |
とドンピシャ一致することがわかります.
Kyplotにおいても,
推定値 | 標準誤差(SE) | |
A1 | 4.57931 | 0.96042 |
A2 | 0.414734 | 0.486903 |
A3 | 1.161442 | 0.05045 |
と同じ結果となります(ということはこの二つのソフトは同じアルゴリズムで標準誤差を計算?)
次は,a1,をシフトしてみましょう.